package com.nuedu.corejava.ch12;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileCopyer {
	public void  copy(String src,String desc) {
		File f1 =new File(src);
		File f2 = new File(desc);
		copy(f1, f2);
	}
	
	//使用方法的重载对参数进行重构
	public void copy(File srcFile ,File descFile) {
		//如果原文件不存在，则不需要拷贝
		if (srcFile == null || !srcFile.exists()) {
			System.out.println("源文件不存在！");
			return;
		}
		//检查目标文件或目标目录是否存在
		if (descFile == null) {
			System.out.println("目标文件为空！");
			return;
		}else {
			descFile.getParentFile().mkdirs();
		}
		//输入流和输出流
		FileInputStream fileInputStream= null;
		FileOutputStream fileOutputStream = null;	
		try {
			fileInputStream = new FileInputStream(srcFile);
			fileOutputStream = new FileOutputStream(descFile);	
			byte[] b = new byte[128];
			//把读到的数据保存到buffer中，并返回实际读取的内容长度 ,如果文件已经读取完毕则返回-1
			int length = fileInputStream.read(b);
			//当length==-1时，表示文件读取完毕
			while(length!=-1) {
				//循环写入数据，直到文件写完为止;注意：每次只写入读取的数据  0, length
			    fileOutputStream.write(b, 0, length);
			    //循环读取数据，直到文件读完为止
			    length = fileInputStream.read(b);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			if(fileOutputStream!=null) {
				try {
					fileOutputStream.close();
				} catch (IOException e) {
				}
			}
			if(fileInputStream!=null) {
				try {
					fileInputStream.close();
				} catch (IOException e) {
				}
			}
		}
	
	
	
	
	}
	
	
}
